package esercitazione4.BTree;

import java.util.ArrayList;


/**
 * 
 * Classe che rappresenta il nodo generico del BAlbero
 *
 * @param <K> K deve essere un tipo che estende Comparable
 * @param <V>
 */
public class BNode<K extends Comparable<K>, V> implements BNodeInterface<K,V>{
	private ArrayList<Element<K,V>> child;
	private BNode<K,V> prec;

	
	/**
	 * Costruttore senza input di default. Serve solo ad inizializzare la struttura inizialmente vuota del nodo.
	 */
	public BNode(){
		child = new ArrayList<Element<K,V>>();
		prec = null;
	}
	
	/**
	 * Metodo che restituisce il riferimento al nodo che precede quello corrente.
	 */
	public BNode<K,V> getPrec(){
		return prec;
	}
	
	/**
	 * Metodo che imposta il riferimento al nodo che precede quello corrente.
	 */
	public void setPrec(BNode<K,V> prec){
		this.prec = prec;
	}

	
	/**
	 * Metodo che restituisce la lista di tutti gli elementi presenti nel nodo.
	 */
	public ArrayList<Element<K,V>> getChild(){
		return child;
	}
	
	/**
	 * Metodo che restituisce il numero di tutti gli elementi presenti nel nodo.
	 */
	public int getNumberOfChild(){
		return child.size();
	}
	
	/**
	 * Metodo che restituisce la stringa equivalente alla lista di tutti gli elementi presenti nel nodo.
	 */
	@Override
	public String toString(){
		String s = "";
		for (int j = 0; j < child.size(); j++)
            s += child.get(j).getKey() + " - " + child.get(j).getValue() + "\n";
		return s;
	}
}
